package com.ctrip.payment.test.ngtest;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.testng.annotations.*;

import java.util.concurrent.TimeUnit;

/**
 * @BeforeSuite 注解的方法将只运行一次，运行所有测试前此套件中。
 *
 * @AfterSuite 注解的方法将只运行一次此套件中的所有测试都运行之后。
 *
 * @BeforeClass 注解的方法将只运行一次先行先试在当前类中的方法调用。
 *
 * @AfterClass 注解的方法将只运行一次后已经运行在当前类中的所有测试方法。
 *
 * @BeforeTest 注解的方法将被运行之前的任何测试方法属于内部类的 <test>标签的运行。
 *
 * @AfterTest 注解的方法将被运行后，所有的测试方法，属于内部类的<test>标签的运行。
 *
 * @BeforeMethod 注解的方法将每个测试方法之前运行。
 *
 * @AfterMethod 被注释的方法将被运行后，每个测试方法。
 *
 * @Test 标记一个类或方法作为测试的一部分
 */
public class NGtest {

    private static final Logger logger = LoggerFactory.getLogger(NGtest.class);

    @BeforeSuite
    public void beforeSuite() {
        logger.info("beforeSuite");
    }
    
    @AfterSuite
    public void afterSuite() {
        logger.info("afterSuite");
    }

    @BeforeClass
    public void beforeClass() {
        logger.info("BeforeClass");
    }

    @BeforeTest
    public void BeforeTest() {
        logger.info("BeforeTest");
    }

    @AfterTest
    public void AfterTest() {
        logger.info("AfterTest");
    }

    @BeforeMethod
    public void BeforeMethod() {
        logger.info("BeforeMethod");
    }

    @AfterMethod
    public void AfterMethod() {
        logger.info("AfterMethod");
    }

    @Test(groups = {"wxshi", "wxshi.a"}, enabled = true)
    public void ngTest1() {
        logger.info("1-ngTest1");
    }

    @Test(groups = "wxshi", enabled = true)
    public void ngTest2() throws Exception {
        TimeUnit.MILLISECONDS.sleep(500);
        logger.info("1-ngTest2");
    }

    @Test(groups = "wxshi.a", enabled = true)
    public void ngTest3() {
        logger.info("1-ngTest3");
    }

    @Test(groups = {"user", "wxshi.a"}, enabled = false)
    public void ngTest4() {
        logger.info("1-ngTest4");
    }

    @Test(groups = "user", enabled = true)
    public void ngTest5() {
        logger.info("1-ngTest5");
    }

    @Test(threadPoolSize = 3, invocationCount = 6, timeOut = 1000)
    public void ngTest6() {
        logger.info("ngTest6");
    }

    @AfterClass
    public void AfterClass() {
        logger.info("AfterClass");
    }
}
